package event.messageevent;

import java.io.Serializable;

/**Messager e' l'analogo che Timer e' per il TimerListener; questa classe funge da ponte di interscambio
 * tra le varie classi di un programma. e' una classe semplice, che pero' ha molte potenzialita'. Per spedire
 * un messaggio basta utilizzare il metodo "sendMessage". Infine OGNI cosa puo' essere incorporata nel messaggio:
 * una stringa, un Button, persino un Vector! l'unica condizione e' che un messaggio contiene solo una classe.
 * @author koldar
 * @version 1.0
 * @see MessageListener
 * @see MessageEvent
 */
public class Messager implements Serializable{
	
	private static final long serialVersionUID = 3561166863840538197L;
	MessageManager Manager;
	
	public Messager(){
		Manager=new MessageManager(this);
	}
	/**indica il MessageListener che e' interessato al ricevimento degli eventuali messaggi spediti da questo
	 * Messager
	 * @param ml indica il MessageListener interessato ai messaggi di questo Messager
	 * @return TRUE se l'operazione e' avvenuta con successo
	 */
	public boolean addMessageListener(MessageListener ml){
		return Manager.addMessageListener(ml);
	}
	/**indica che il MessageListener ml non e' piu' interessato ai messaggi di questo Messager
	 * 
	 * @param ml il MessagerListener interessato
	 * @return TRUE se l'operazione e' avvenuta con successo, FALSE altrimenti
	 */
	public boolean removeMessageListener(MessageListener ml){
		return Manager.removeMessageListener(ml);
	}
	/**spedisce un messaggio a tutti i MessageListener con contenuto informativo info
	 * 
	 * @param info indica l'oggetto da trasferire
	 */
	public void sendMessage(Object info){
		Manager.sendMessageEvent(info);
	}
}
